#!/usr/bin/env python
#
# Utility script to run pyflakes with the modules we care about and
# exclude errors we know to be fine.

import os
import re
import subprocess
import sys


def main():

    modules = sys.argv[1:]

    if not modules:
        modules = ['rootpy']

    p = subprocess.Popen(['pyflakes'] + modules,
                         stderr=subprocess.PIPE,
                         stdout=subprocess.PIPE,
                         close_fds=True)

    contents = p.stdout.readlines()

    # Read in the ignore file
    ignore = []
    fp = open("pyflakes.ignore", "r")

    for line in fp.readlines():
        ignore.append(line.rstrip())

    fp.close()

    # Read in the exclusions file
    exclusions = {}
    fp = open("pyflakes.exclude", "r")

    for line in fp.readlines():
        exclusions[line.rstrip()] = 1

    fp.close()

    # Now filter things
    for line in contents:
        line = line.rstrip()
        skip = False
        for ignore_line in ignore:
            if line.startswith(ignore_line):
                skip = True
                break
        if skip:
            continue
        test_line = re.sub(r':[0-9]+:', r':*:', line, 1)
        test_line = re.sub(r'line [0-9]+', r'line *', test_line)

        if test_line not in exclusions:
            print(line)

if __name__ == "__main__":
    main()
